/**
 * @(#)IChannelApkInfo.java 2016年9月22日
 * Copyright(C) 2015 ZHEXIN IT CO.,LTD. All rights reserved.
 */
package org.jsbd.boss.dao;

import java.util.List;
import java.util.Map;

import org.jsbd.boss.common.DataGridModel;
import org.jsbd.boss.domian.RetentPayConfig;
import org.jsbd.boss.domian.channel.ApkPRIConfig;
import org.jsbd.boss.domian.channel.ApkRetentConfig;
import org.jsbd.boss.domian.channel.ChannelApkConfig;
import org.jsbd.boss.domian.channel.ChannelApkConfigDto;
import org.jsbd.boss.domian.channel.RetentLogConfig;
import org.jsbd.boss.domian.channel.TasktimeDto;

/**
 * TODO 请加入本类的说明
 * 
 * @author <a href="mailto:zhangbinghua@zhexinit.com" >zbh</a>
 * @version 1.0.0
 */
public interface IChannelApkConfigDAO {

	public Integer insertConfig(ChannelApkConfig apkConfig);

	public Integer updateConfig(ChannelApkConfig apkConfig);
	
	public Integer updateConfigForBatch(ChannelApkConfig apkConfig);
	
	
	public void copyConfig(ChannelApkConfig apkConfig);

	public Integer deleteConfig(String mark);

	/**
	 * 
	 * selectAllRetentAPkInfos:查询留存apk信息
	 * 
	 * @author <a href="mailto:xupengcheng@zhexinit.com" >徐鹏程</a>
	 * @param param
	 * @return
	 */
	public List<ApkRetentConfig> selectAllRetentAPkInfos(ApkRetentConfig config);

	/**
	 * selectApkInfos:查询apk信息
	 * 
	 * @author <a href="mailto:xupengcheng@zhexinit.com" >徐鹏程</a>
	 * @param config
	 * @return
	 */
	public List<ChannelApkConfig> selectApkInfos(ChannelApkConfig config);

	/**
	 * 
	 * selectApkConfigs:根据条件查询apk信息 where不带附加条件
	 * 
	 * @author <a href="mailto:xupengcheng@zhexinit.com" >徐鹏程</a>
	 * @param config
	 * @return
	 */
	public List<ChannelApkConfig> selectApkConfigs(ChannelApkConfig config);

	/**
	 * 
	 * getCountOfConfig:TODO 请描述该方法是做什么用途的
	 * 
	 * @author <a href="mailto:xupengcheng@zhexinit.com" >徐鹏程</a>
	 * @param config
	 * @return
	 */
	public int getCountOfConfig(ChannelApkConfig config);

	/**
	 * 
	 * selectApkConfigsAndSimulator:查询所有有效的apk信息以及对应的版本信息
	 * 
	 * @author <a href="mailto:zhouchao@xingbook.com" >周超</a>
	 * @return
	 */
	public List<ChannelApkConfig> selectApkConfigsAndSimulator();

	/**
	 * queryApkInfos:TODO 请描述该方法是做什么用途的
	 * 
	 * @author <a href="mailto:xupengcheng@zhexinit.com" >徐鹏程</a>
	 * @param config
	 * @return
	 */
	public List<ChannelApkConfig> queryApkInfos(ChannelApkConfig config);

	/**
	 * queryApkList:模糊查询带版本号
	 * 
	 * @author <a href="mailto:xupengcheng@zhexinit.com" >徐鹏程</a>
	 * @param config
	 * @return
	 */
	public List<ChannelApkConfig> queryApkList(ChannelApkConfig config);

	/**
	 * selectApkListOfLogin:根据登录方式获取apk省份信息
	 * 
	 * @author <a href="mailto:xupengcheng@zhexinit.com" >徐鹏程</a>
	 * @param config
	 * @return
	 */
	public List<ApkPRIConfig> selectApkListOfLogin(ApkPRIConfig config);

	/**
	 * 更新daylimit
	 * 
	 * @param channelApkConfigs
	 */
	public void updateDaylimit(List<ChannelApkConfig> channelApkConfigs);

	/**
	 * 通过mark查询记录
	 * 
	 * @param mark
	 * @return
	 */
	public ChannelApkConfig getByMark(String mark);

	public List<Map<String, String>> findApknameByMarks(List<String> marks);

	public List<TasktimeDto> selectTasktimeByBaseList();

	/**
	 * selectAndriodVerList:TODO 请描述该方法是做什么用途的
	 * 
	 * @author <a href="mailto:xupengcheng@zhexinit.com" >徐鹏程</a>
	 * @return
	 */
	public List<String> selectAndriodVerList();

	/**
	 * selectApkListOfProvince:TODO 请描述该方法是做什么用途的
	 * 
	 * @author <a href="mailto:xupengcheng@zhexinit.com" >徐鹏程</a>
	 * @param config
	 * @return
	 */
	public List<ApkPRIConfig> selectApkListOfProvince(ApkPRIConfig config);

	/**
	 * 
	 * selectRetentFillApkList:TODO 请描述该方法是做什么用途的
	 * @author <a href="mailto:xupengcheng@zhexinit.com" >徐鹏程</a>
	 * @param config
	 * @return
	 */
	public List<ApkRetentConfig> selectRetentFillApkList(RetentLogConfig config);

	public Map<String, Object> selectAllRetentMarkInfo(DataGridModel page, RetentPayConfig retentPayConfig);

	/**
	 * 批量修改文件
	 * 
	 * @param apkConfig
	 */
	public void batchUpdateConfig(ChannelApkConfig apkConfig);

	public List<ChannelApkConfig> getAllMarkAndApkname();

	/**
	 * selectAllRetentConfigs:查询所有留存配置
	 * 
	 * @author <a href="mailto:xupengcheng@zhexinit.com" >徐鹏程</a>
	 * @return
	 */
	public List<ApkRetentConfig> selectAllRetentConfigs();

	/**
	 * selectAllSimpleApk:TODO 请描述该方法是做什么用途的
	 * 
	 * @author <a href="mailto:xupengcheng@zhexinit.com" >徐鹏程</a>
	 * @return
	 */
	public List<ChannelApkConfig> selectAllSimpleApk();

	/**
	 * 修改时间
	 * 
	 * @param apkConfig
	 */
	public void updateModifyTime(ChannelApkConfig apkConfig);

	void copyRetentTimes(ChannelApkConfig apkConfig);

	public List<ChannelApkConfigDto> selectConfigApkListByIsdelete(Integer isDelete, List<String> keywords);
}
